1. Field of the Invention
The present invention relates generally to networking systems. More particularly, embodiments of the invention relate generally to transmitting and receiving network messages.
2. Background Technology
Computer and data communications networks continue to proliferate due to declining costs, increasing performance of computer and networking equipment, and increasing demand for communication bandwidth. Communications networks—including wide area networks (“WANs”), local area networks (“LANs”), metropolitan area networks (“MANs”), and storage area networks (“SANS”)—allow increased productivity and use of distributed computers or stations through the sharing of resources, the transfer of voice and data, and the processing of voice, data and related information at the most efficient locations. Moreover, as organizations have recognized the economic benefits of using communications networks, network applications such as electronic mail, voice and data transfer, host access, and shared and distributed databases are increasingly used as a means to increase user productivity. This increased demand, together with the growing number of distributed computing resources, has resulted in a rapid expansion of the number of installed networks.
As the demand for networks has grown, network technology has developed to the point that many different physical configurations presently exist. Examples include Gigabit Ethernet (“GE”), 10 GE, Fiber Distributed Data Interface (“FDDI”), Fibre Channel (“FC”), Synchronous Optical Network (“SONET”) and InfiniBand networks. These networks, and others, typically conform to one of a variety of established standards, or protocols, which set forth rules that govern network access as well as communications between and among the network resources. Typically, such networks utilize different cabling systems, have different characteristic bandwidths and typically transmit data at different speeds. Network bandwidth, in particular, has been the driving consideration behind many advancements in the area of high speed communication systems, methods and devices.
For example, the ever-increasing demand for network bandwidth has resulted in the development of technology that increases the amount of data that can be pushed through a single channel on a network. Advancements in modulation techniques, coding algorithms and error correction have vastly increased the rates at which data can be transmitted across networks. For example, a few years ago, the highest rate that data could travel across a network was at about one Gigabit per second. This rate has increased to the point where data can travel across Ethernet and SONET networks at rates as high as 10 gigabits per second, or faster.
As communication networks have increased in size, speed and complexity however, they have become increasingly likely to develop a variety of problems that, in practice, have proven difficult to diagnose and resolve. Such problems are of particular concern in light of the continuing demand for high levels of network operational reliability and for increased network capacity.
The problems generally experienced in network communications can take a variety of forms and may occur as a result of a variety of different circumstances. Examples of circumstances, conditions and events that may give rise to network communication problems include the transmission of unnecessarily small frames of information, inefficient or incorrect routing of information, improper network configuration and superfluous network traffic, to name just a few. Such problems are aggravated by the fact that networks are continually changing and evolving due to growth, reconfiguration and introduction of new network topologies and protocols. Moreover, new network interconnection devices and software applications are constantly being introduced and implemented. Circumstances such as these highlight the need for effective, reliable, and flexible diagnostic mechanisms.
Two common network protocols are Serial Attached SCSI (SAS) protocol and Serial Advanced Technology Attachment (SATA) protocol. SAS-compatible devices are typically compatible with SATA devices. As shown in FIG. 1, one conventional system 100 includes nodes 102a, 102b, 104. The nodes 102a, 102b, 104 are SAS or SATA devices. The nodes 102a, 102b provide redundant access to the node 104—that is, either of the nodes 102a, 102b may be used to communicate with the node 104. As shown in FIG. 1, the nodes 102a, 102b communicate with the node 104 via a SAS/SATA transceiver 106.
FIG. 2 illustrates aspects of the SAS/SATA transceiver 106. As shown in FIG. 2, the SAS/SATA transceiver 106 includes a first bidirectional port 108 coupled to the node 102a, a second bidirectional port 110 coupled to the node 102b, and a third bidirectional port 112 coupled to the node 104. The SAS/SATA transceiver 106 also includes multiplexers 126, 128, 130. The multiplexer 130 provides a selectable output, which is selected from the inputs that it receives (the input signal of the port 108 and the input signal of the port 110). The multiplexer 126 provides a selectable output, which is selected from the inputs that it receives (the input signal from the port 108 and the input signal from the port 112). The multiplexer 128 provides a selectable output, which is selected from the inputs that it receives (the input signal from the port 110 and the input signal from the port 112). The SAS/SATA transceiver 106 also includes a control module (not shown) that may be used to control the outputs of the multiplexers 126, 128, 130. These aspects of the SAS/SATA transceiver 106 may be implemented using a VSC7177, which is a commercially available product of Vitesse Semiconductor Corporation, having offices at 741 Calle Plano, Camarillo, Calif. 93012, USA.
The SAS/SATA transceiver 106 helps nodes 102a, 102b communicate with the node 104. In particular, the control module of the SAS/SATA transceiver 106 may be used to control the outputs of the multiplexers 126, 128, 130 to allow the nodes 102a, 102b to communicate with the node 104.
To allow the nodes 102a, 104 to communicate, the control module of the SAS/SATA transceiver 106 causes the multiplexer 130 to select the input signal of the port 108. With the multiplexer 130 selecting the input signal of the port 108, the input of the port 108 is sent as the output of the port 112, which allows the node 102a to send network messages to the node 104. To allow the nodes 102a, 104 to communicate, the control module of the SAS/SATA transceiver 106 also causes the multiplexer 126 to select the input signal of the port 112. With the multiplexer 126 selecting the input signal of the port 112, the input of the port 112 is sent as the output of the port 108, which allows the node 104 to send network messages to the node 102a. 
To allow the nodes 102b, 104 to communicate, the control module of the SAS/SATA transceiver 106 causes the multiplexer 130 to select the input signal of the port 110. With the multiplexer 130 selecting the input signal of the port 110, the input of the port 110 is sent as the output of the port 112, which allows the node 102b to send network messages to the node 104. To allow the nodes 102b, 104 to communicate, the control module of the SAS/SATA transceiver 106 also causes the multiplexer 128 to select the input signal of the port 112. With the multiplexer 128 selecting the input signal of the port 112, the input of the port 112 is sent as the output of the port 110, which allows the node 104 to send network messages to the node 102b. 
The port 108 has a loop-back mode to permit the node 102a to test its communication with the SAS/SATA transceiver 106. In particular, the control module of the SAS/SATA transceiver 106 may cause the multiplexer 126 to select the input signal from the port 108—causing any messages sent from the node 102a to “loop back” or return to the node 102a. When the port 108 is in this loop-back mode, the node 102a may send test messages to the SAS/SATA transceiver 106, which returns the test messages back to the node 102a via the output of the port 108.
The loop-back mode of the port 108 is typically used when the SAS/SATA transceiver 106 is not sending messages from the node 102a to the node 104. For example, when the multiplexer 130 is selecting the input signal from the port 110 (e.g., when the SAS/SATA transceiver 106 is sending messages from the node 102b to the node 104), the multiplexer 130 is not selecting the signal from the port 108, and thus, the SAS/SATA transceiver 106 is not sending messages from the node 102a to the node 104. Since the SAS/SATA transceiver 106 is not sending messages from the node 102a to the node 104, the node 102a may advantageously send test messages to the port 108 in loop-back mode to test its communication with the SAS/SATA transceiver 106.
The port 110 also has a loop-back mode to permit the node 102a to test its communication with the SAS/SATA transceiver 106. In particular, the control module of the SAS/SATA transceiver 106 may cause the multiplexer 128 to select the input signal from the port 110—causing any messages sent from the node 102b to “loop back” or return to the node 102b. When the port 110 is in this loop-back mode, the node 102b may send test messages to the SAS/SATA transceiver 106, which returns the test messages back to the node 102b via the output of the port 110.
The loop-back mode of the port 110 is typically used when the SAS/SATA transceiver 106 is not sending messages from the node 102b to the node 104. For example, when the multiplexer 130 is selecting the input signal from the port 108 (e.g., when the SAS/SATA transceiver 106 is sending messages from the node 102a to the node 104), the multiplexer 130 is not selecting the signal from the port 110, and thus, the SAS/SATA transceiver 106 is not sending messages from the node 102b to the node 104. Since the SAS/SATA transceiver 106 is not sending messages from the node 102b to the node 104, the node 102b may advantageously send test messages to the port 110 in loop-back mode to test its communication with the SAS/SATA transceiver 106.
While these loop-back modes may allow nodes to test certain types of connections, many other types of testing may be needed in SAS or SATA networks. Accordingly, various SAS/SATA network diagnostic components have been created to test SAS networks, SATA networks or both.
For example, as shown in FIG. 3, a networking system 132 includes nodes 134, 136, which are SAS/SATA nodes that communicate with each other via the networking system. The networking system 132 also includes a known SAS/SATA network diagnostic component 138. The SAS/SATA network diagnostic component 138 may receive and analyze one or more network messages sent between the nodes 134, 136. The SAS/SATA network diagnostic component 138 may also retransmit those network messages. In particular, the SAS/SATA network diagnostic component 138 may receive network messages sent from the node 134 and then retransmit them to the node 136. Also, the SAS/SATA network diagnostic component 138 may receive network messages sent from the node 136 and then retransmit them to the node 134.
Prior to retransmitting these network messages, the SAS/SATA network diagnostic component 138 can alter the signal used to transmit the network messages. For example, the SAS/SATA network diagnostic component 138 may digitally retime the signal, may alter the content of the messages themselves, or both. Because it is not always desirable to have the SAS/SATA network diagnostic component 138 alter the signal, the SAS/SATA network diagnostic component 138 may be selectively configured to alter (or not to alter) the signal used to transmit the network messages.
FIG. 4 illustrates aspects of the architecture that the SAS/SATA diagnostic component 138 uses to help the SAS/SATA diagnostic component 138 to be selectively configured to alter (or not to alter) the signal used to transmit the network messages between the nodes 134, 136.
As shown in FIG. 4, the SAS/SATA diagnostic component 138 includes a diagnostic module 140, which includes a signal alteration module 142. The SAS/SATA diagnostic component 138 also includes SAS/SATA transceivers 144a, 144b. 
The SAS/SATA transceivers 144a, 144b include various aspects. The SAS/SATA transceivers 144a, 144b respectively include a first bidirectional port 146a, 146b; a second bidirectional port 148a, 148b; and a third bidirectional port 150a, 150b. These bidirectional ports include an input and an output. The SAS/SATA transceivers 144a, 144b respectively include multiplexers 152a, 152b. The multiplexer 152a provides a selectable output, which is selected from the inputs that it receives (the input signal from the port 148a and the input signal from the port 150a). The multiplexer 152b also provides a selectable output, which is selected from the inputs that it receives (the input signal from the port 148b and the input signal from the port 150b). The input of the port 146a is transmitted to the outputs of the ports 148a, 150a; and the input of the port 146b is transmitted to the outputs of the ports 148b, 150b. The SAS/SATA transceivers 144a, 144b may each include a control module (not shown) that may be used to control the outputs of the multiplexers 152a, 152b. These aspects of the SAS/SATA transceivers 144a, 144b may be implemented using a VSC7173, which is a commercially available product of Vitesse Semiconductor Corporation, having offices at 741 Calle Plano, Camarillo, Calif. 93012, USA.
As shown in FIG. 4, the ports 148a, 148b are coupled to the diagnostic module 140. The ports 150a, 150b are coupled to each other. The port 146a is coupled to the node 134, and the port 146b is coupled to the node 136. As discussed in further detail below, the control modules of the SAS/SATA transceivers 144a, 144b may be used to control the outputs of the multiplexers 152a, 152b to help the SAS/SATA diagnostic component 138 to be selectively configured to alter (or not to alter) the signal used to transmit the network messages between the nodes 134, 136.
FIG. 5 illustrates an exemplary path of the signal used to transmit network messages from the node 134 to the node 136 without the signal alteration module 142 altering the signal. As shown in FIG. 5, the signal is received via the input of the port 146a and transmitted to the output of the port 150a. The input of the port 150b receives the signal from the output of the port 150a. The signal is sent from the input of the port 150b to the output of the port 146b via the multiplexer 152b (FIG. 4). Thus, the signal used to transmit network messages from the node 134 to the node 136 is sent from the port 146a to the port 150a, from the port 150a to the port 150b, and from the port 150b to the port 146b without the signal alteration module 142 altering the signal. As shown in FIG. 5, the signal is also transmitted from the input of the port 146a to the output of the port 148a. The diagnostic module 140 receives the signal from the output of the port 148a and may perform a desired network diagnostic function using the network messages sent via the signal.
FIG. 6 illustrates an exemplary path of the signal used to transmit network messages from the node 136 to the node 134 without the signal alteration module 142 altering the signal. As shown in FIG. 6, the signal is received via the input of the port 146b and transmitted to the output of the port 150b. The input of the port 150a receives the signal from the output of the port 150b. The signal is sent from the input of the port 150a to the output of the port 146a via the multiplexer 152a (FIG. 4). Thus, the signal used to transmit network messages from the node 136 to the node 134 is sent from the port 146b to the port 150b, from the port 150b to the port 150a, and from the port 150a to the port 146a without the signal alteration module 142 altering the signal. As shown in FIG. 6, the signal is also transmitted from the input of the port 146b to the output of the port 148b. The diagnostic module 140 receives the signal from the output of the port 148b and may perform a desired network diagnostic function using the network messages sent via the signal.
FIG. 7 illustrates an exemplary path of the signal used to transmit network messages from the node 134 to the node 136 with the signal alteration module 142 altering the signal. As shown in FIG. 7, the signal is received via the input of the port 146a and transmitted to the output of the port 148a. The diagnostic module 140 receives the signal from the output of the port 148a and may perform a desired network diagnostic function using the network messages sent via the signal. In addition, the signal alteration module 142 may alter the signal. For example, the signal alteration module 142 may digitally retime the signal, may alter the content of the network messages themselves, or both. The diagnostic module 140 transmits the altered signal to the input of the port 148b. The altered signal is sent from the input of the port 148b to the output of the port 146b via the multiplexer 152b (FIG. 4).
FIG. 8 illustrates an exemplary path of the signal used to transmit network messages from the node 136 to the node 134 with the signal alteration module 142 altering the signal. As shown in FIG. 8, the signal is received via the input of the port 146b and transmitted to the output of the port 148b. The diagnostic module 140 receives the signal from the output of the port 148b and may perform a desired network diagnostic function using the network messages sent via the signal. In addition, the signal alteration module 142 may alter the signal. For example, the signal alteration module 142 may digitally retime the signal, may alter the content of the network messages themselves, or both. The diagnostic module 140 transmits the altered signal to the input of the port 148a. The altered signal is sent from the input of the port 148a to the output of the port 146a via the multiplexer 152a (FIG. 4).
Advantageously, because it is sometimes desirable to have the SAS/SATA network diagnostic component 138 alter a signal used to transmit network messages between nodes, the SAS/SATA network diagnostic component 106 may be selectively configured to have the alteration module 142 alter the signal (as shown in FIGS. 7-8). In addition, because it is sometimes not desirable to have the SAS/SATA network diagnostic component 138 alter the signal, the SAS/SATA network diagnostic component 106 may be selectively configured to have the alteration module 142 not alter the signal (as shown in FIGS. 5-6).
Unfortunately, as shown in FIGS. 5-8, the signal (whether altered by the signal alteration module 142 or not) passes through each of the SAS/SATA transceivers 144a, 144b—which can subject the signal to increased jitter and signal degradation.